#pragma once

#include <string>
#include <spdlog/spdlog.h>

class Logger {
public:
    static void init();
    static std::shared_ptr<spdlog::logger> get_logger();

    template<typename... Args>
    static void info(const char* fmt, const Args&... args) {
        get_logger()->info(fmt, args...);
    }

    // warm
    template<typename... Args>
    static void warn(const char* fmt, const Args&... args) {
        get_logger()->warn(fmt, args...);
    }

    template<typename... Args>
    static void error(const char* fmt, const Args&... args) {
        get_logger()->error(fmt, args...);
    }

    template<typename... Args>
    static void debug(const char* fmt, const Args&... args) {
        get_logger()->debug(fmt, args...);
    }

private:
    static std::shared_ptr<spdlog::logger> logger_;
}; 